package com.proyectos.bean;


import com.proyectos.ejb.AlEjbLocal;
import com.proyectos.ejb.PreEjbLocal;
import com.proyectos.model.Preguntas;
import com.proyectos.model.PreguntasProyectos;
import com.proyectos.model.Proyectos;
import com.proyectos.model.alumnos;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Jose
 */
public class CtrAlumnos implements Serializable {

    @EJB
    private AlEjbLocal ejb;
    @EJB
    private PreEjbLocal oejb_pre;
   
    
    private String name;
    private List<alumnos> lista;
    private alumnos activeReg;
    private boolean lnuevo;
    private boolean ladmin;
    private CtrEntorno oentorno;
    List<PreguntasProyectos> preguntas;

    public boolean isLadmin() {
        return ladmin;
    }

    public void setLadmin(boolean ladmin) {
        this.ladmin = ladmin;
    }

    public CtrEntorno getOentorno() {
        return oentorno;
    }

    public void setOentorno(CtrEntorno oentorno) {
        this.oentorno = oentorno;
    }

    public alumnos getActiveReg() {
        return activeReg;
    }

    public void setActiveReg(alumnos activeReg) {
        this.activeReg = activeReg;
    }

    public boolean isLnuevo() {
        return lnuevo;
    }

    public void setLnuevo(boolean lnuevo) {
        this.lnuevo = lnuevo;
    }

    public void nuevo() {
        try {
            this.lnuevo = true;
            this.ladmin = oentorno.esAdmin() && lnuevo;
            this.activeReg = new alumnos();
            this.activeReg.setNcarrera(this.oentorno.getCarrera());
            Map<String, Object> options = new HashMap<String, Object>();
            options.put("modal", true);
            options.put("draggable", true);
            options.put("resizable", false);
            options.put("contentHeight", 300);
            options.put("contentWidth", 700);
            RequestContext.getCurrentInstance().openDialog("mantAlumnos", options, null);
        } catch (Exception ex) {
            Logger.getLogger(CtrAlumnos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void edit(BigDecimal id) {
        try {
            this.lnuevo = false;
            this.ladmin = oentorno.esAdmin() && lnuevo;

            this.activeReg = this.ejb.get(id);

            Map<String, Object> options = new HashMap<String, Object>();
            options.put("modal", true);
            options.put("draggable", true);
            options.put("resizable", false);
            options.put("contentHeight", 300);
            options.put("contentWidth", 700);
            RequestContext.getCurrentInstance().openDialog("mantAlumnos", options, null);
        } catch (Exception ex) {
            Logger.getLogger(CtrAlumnos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void save(ActionEvent event) {
        try {

            if (this.lnuevo) {
                this.ejb.add(activeReg);
            } else {
                this.ejb.save(activeReg);
            }
            this.buscar();
            RequestContext.getCurrentInstance().closeDialog(null);
        } catch (Exception ex) {
            this.addMessage(ex.getMessage());
            //Logger.getLogger(CtrAlumnos.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public List<alumnos> getLista() {
        return lista;
    }

    public void setLista(List<alumnos> lista) {
        this.lista = lista;
    }

    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR: ", summary);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void buscar() {
        if (this.oentorno.esAlu()) {
            System.out.println("dentro");
            TreeMap vparametros = new TreeMap();
            vparametros.put("ccodigo", this.oentorno.alumno.getCcodigo());
            vparametros.put("ncarrera", this.oentorno.getCarrera());
            lista = this.ejb.query("alumnos.findByCodigo", vparametros);

        } else {

            TreeMap vparametros = new TreeMap();
            vparametros.put("ncarrera", this.oentorno.getCarrera());
            if (name != null && !name.isEmpty()) {

                vparametros.put("cnombre", "%" + name.toUpperCase() + "%");
            } else {
                vparametros.put("cnombre", "%");
            }
            lista = this.ejb.query("alumnos.findByName", vparametros);
        }

    }

    public void buscar_todo() {

        this.buscar();

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void delete(ActionEvent event) {
        try {

            this.ejb.delete(activeReg.getNcodigo());
        } catch (Exception ex) {

            Logger.getLogger(CtrAlumnos.class.getName()).log(Level.SEVERE, null, ex);
        }
        RequestContext.getCurrentInstance().closeDialog(null);
        this.buscar();
    }

    public CtrAlumnos() {

    }

    public List<alumnos> getVlista() {
        TreeMap vparametros = new TreeMap();
        vparametros.put("ncarrera", this.getOentorno().getCarrera());
        return this.ejb.query("alumnos.findAll", vparametros);

    }
    
    public void setPreguntas(List<PreguntasProyectos> preguntas)
    {
        this.preguntas = preguntas;
    }
    public List<PreguntasProyectos> getPreguntas() {
        preguntas = new ArrayList<PreguntasProyectos>();
        TreeMap vparametros = new TreeMap();
        vparametros.put("ncarrera", this.oentorno.getCarrera());
        List<Preguntas> vpreg = this.oejb_pre.query("Preguntas.findAll", vparametros);
        for (Preguntas pre : vpreg) {
            PreguntasProyectos pro = new PreguntasProyectos();
            pro.setNpregunta(pre);
            pro.setNproyecto(null);
            preguntas.add(pro);
        }
        return preguntas;
    }
    List<Proyectos> vproyectos;

    public List<Proyectos> getVproyectos() {
        return vproyectos;
    }

    public void setVproyectos(List<Proyectos> vproyectos) {
        this.vproyectos = vproyectos;
    }
    
    public void selectPreguntas(ActionEvent event) {
        try{
            vproyectos= this.ejb.obtenerProyecto(this.oentorno.getAlumno(), preguntas);
             
            Map<String, Object> options = new HashMap<String, Object>();
            options.put("modal", true);
            options.put("draggable", true);
            options.put("resizable", false);
            options.put("contentHeight", 300);
            options.put("contentWidth", 700);
            RequestContext.getCurrentInstance().openDialog("proySelected", options, null);
             
     
        }catch(Exception e)
        {
          this.addMessage(e.getMessage());   
        }
    }
public void savePro(Proyectos proyec) {
        try {
            ejb.assignarProyecto(oentorno.alumno,proyec);
            RequestContext.getCurrentInstance().closeDialog(null);
        } catch (Exception ex) {
            this.addMessage(ex.getMessage());
            //Logger.getLogger(CtrAlumnos.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}
